home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / inet / internet-drafts / draft-braden-rsvp-00.txt < prev    next >
Text File  |  1993-10-26  |  85KB  |  2,237 lines

  1. Internet Draft                                               Lixia Zhang
  2. Expires: April 1994                                           Xerox PARC
  3. File: draft-braden-rsvp-00.txt                                Bob Braden
  4.                                                                  USC-ISI
  5.                                                           Deborah Estrin
  6.                                                              USC/USC-ISI
  7.                                                              Shai Herzog
  8.                                                                  USC-ISI
  9.                                                              Sugih Jamin
  10.                                                                      USC
  11.  
  12.                 Resource ReSerVation Protocol (RSVP) --
  13.  
  14.                    Version 1 Functional Specification
  15.  
  16.  
  17.  
  18. Status of Memo
  19.  
  20.    This document is an Internet-Draft.  Internet-Drafts are working
  21.    documents of the Internet Engineering Task Force (IETF), its Areas,
  22.    and its Working Groups.  Note that other groups may also distribute
  23.    working documents as Internet-Drafts.
  24.  
  25.    Internet-Drafts are draft documents valid for a maximum of six
  26.    months.  Internet-Drafts may be updated, replaced, or obsoleted by
  27.    other documents at any time.  It is not appropriate to use Internet-
  28.    Drafts as reference material or to cite them other than as a "working
  29.    draft" or "work in progress."
  30.  
  31. Abstract
  32.  
  33.    This memo describes version 1 of RSVP, a resource reservation setup
  34.    protocol designed for an integrated services Internet.  RSVP provides
  35.    receiver-initiated setup of resource reservations for multicast or
  36.    unicast data flows, with good scaling and robustness properties.
  37.  
  38. 1. Introduction
  39.  
  40.    This memo describes RSVP, a resource reservation setup protocol
  41.    designed for an integrated services Internet [RSVP93,ISInt93].  A
  42.    host invokes RSVP to request a specific quality of service (QoS) for
  43.    a data stream.  Hosts and routers use RSVP to deliver these requests
  44.    to the routers along the path(s) of the data stream and to maintain
  45.    router and host state to provide the requested service.  This
  46.    generally requires reserving resources in those nodes.
  47.  
  48.    At each router along the path, RSVP passes a new resource reservation
  49.  
  50.  
  51.  
  52. Zhang, Braden et al       Expires: April 1994                   [Page 1]
  53.  
  54.  
  55.  
  56.  
  57. Internet Draft             RSVP Specification               October 1993
  58.  
  59.  
  60.    request to an admission control routine, to determine whether there
  61.    are sufficient resources available.  If there are, the router reserve
  62.    the resources and updates its packet scheduler and classifier control
  63.    parameters to provide the requested QoS [ISInt93].
  64.  
  65.    The objectives and general justification for RSVP design are
  66.    presented in [RSVP93,ISInt93].  In summary, RSVP has the following
  67.    attributes:
  68.  
  69.    o    RSVP supports multicast or unicast data delivery and adapts to
  70.         changing group membership as well as changing routes.
  71.  
  72.    o    RSVP is not itself a routing protocol, but it is designed to use
  73.         the existing unicast and multicast routing protocols to
  74.         determine the data path(s).
  75.  
  76.    o    RSVP reserves resources for simplex data streams.
  77.  
  78.    o    RSVP is receiver-oriented, i.e., the receiver of the data flow
  79.         is responsible for the initiation and maintenance of the
  80.         resource reservation.
  81.  
  82.    o    RSVP maintains "soft-state" in the routers, enabling it to
  83.         gracefully support dynamic membership changes and automatically
  84.         adapt to routing changes.
  85.  
  86.    o    RSVP provides several "reservation styles" with different
  87.         reservation models to fit a variety of applications.
  88.  
  89.    o    RSVP provides transparent operation through routers that do not
  90.         support it.
  91.  
  92.    There are two aspects to RSVP, its reservation model and its protocol
  93.    mechanisms.  The RSVP protocol mechanisms provide a general facility
  94.    for creating and maintaining distributed reservation state across a
  95.    mesh of multicast delivery paths.  These mechanisms treat the
  96.    reservation parameters as opaque data, except for certain well-
  97.    defined operations, and simply pass them to the traffic control
  98.    modules (admission control, packet scheduler, and classifier) for
  99.    interpretation.  Although the RSVP protocol mechanisms are
  100.    independent of the encoding of these parameters, the encodings must
  101.    be defined in the reservation model that is presented to an
  102.    application (see section 3.6.1).
  103.  
  104.    In order to efficiently accommodate heterogeneous receivers and
  105.    dynamic group membership, RSVP makes the receivers responsible for
  106.    requesting resource reservations [RSVP93].  Each receiver can request
  107.    a reservation that is tailored to its particular requirement, and
  108.  
  109.  
  110.  
  111. Zhang, Braden et al       Expires: April 1994                   [Page 2]
  112.  
  113.  
  114.  
  115.  
  116. Internet Draft             RSVP Specification               October 1993
  117.  
  118.  
  119.    RSVP will deliver this request to the routers along the reverse
  120.    path(s) to the sender(s).
  121.  
  122.    Sections 2.1 and 2.2 of this memo summarize the RSVP reservation
  123.    model, while Sections 2.3 describes the protocol mechanisms.
  124.    Sections 2.4 presents the host model, and Section 2.5 gives examples
  125.    of both model and mechanism.  Section 3 presents the functional
  126.    specification for RSVP.
  127.  
  128. 2. RSVP Overview
  129.  
  130.    2.1 RSVP Reservation Model
  131.  
  132.       Figure 1 illustrates a single multicast distribution session.  The
  133.       arrows indicate data flowing from senders S1 and S2 to receivers
  134.       R1, R2, and R3, and the cloud represents the distribution mesh
  135.       created by the multicast routing protocol. Multicast distribution
  136.       replicates each data packet from a sender Si and delivers a copy
  137.       to every receiver Rj (whether a packet actually arrives at Rj
  138.       depends on the specified QoS and perhaps upon congestion
  139.       encountered along the path).  Each sender Si and receiver Rj may
  140.       correspond to a unique Internet host, or there may be multiple
  141.       senders (e.g., multiple TV cameras) and/or receivers in a single
  142.       host.
  143.  
  144.       The RSVP model for data distribution is simplex, i.e., it reserves
  145.       resources in only one direction on a link, so that senders are
  146.       logically distinct from receivers.  However, the same host may act
  147.       as both sender and receiver.
  148.  
  149.  
  150.                  Senders                              Receivers
  151.                              _____________________
  152.                             (                     ) ===> R1
  153.                     S1 ===> (    Multicast        )
  154.                             (                     ) ===> R2
  155.                             (    distribution     )
  156.                     S2 ===> (                     )
  157.                             (    by Internet      ) ===> R3
  158.                             (_____________________)
  159.  
  160.                    Figure 1: Multicast Distribution Session
  161.  
  162.  
  163.       All data packets in a session are addressed to the same IP
  164.       destination address DestAddress.  For multicast delivery,
  165.       DestAddress is the multicast group address to which the data is
  166.       addressed, and the receivers will have all "joined" this multicast
  167.  
  168.  
  169.  
  170. Zhang, Braden et al       Expires: April 1994                   [Page 3]
  171.  
  172.  
  173.  
  174.  
  175. Internet Draft             RSVP Specification               October 1993
  176.  
  177.  
  178.       group.  For unicast delivery, DestAddress is simply the unicast
  179.       address of the single receiver.  RSVP identifies a session by
  180.       DestAddress plus a 32-bit stream identifier called the destination
  181.       stream id (DestSID).  We use the term session socket for the
  182.       (DestAddress, DestSID) pair that defines a session.  RSVP treats
  183.       each session independently.  In the rest of this document, a
  184.       particular session (hence, session socket) is always implied even
  185.       if not stated.
  186.  
  187.       If a particular sender's flow arriving at a router has no
  188.       corresponding reservation in place, the router will either drop
  189.       the packets from the flow or send them using a best-effort QoS.
  190.       This choice is controlled by each sender.
  191.  
  192.       Depending upon the reservation style and the state already in
  193.       place for the session, a new or modified reservation request may
  194.       result in a call to admission control.  If an admission control
  195.       call fails, the reservation is rejected and an RSVP error message
  196.       is sent downstream to the receiver(s) responsible for it.
  197.  
  198.       A single RSVP resource reservation request is defined by a
  199.       flowspec together with a filterspec; this pair is called a Flow
  200.       Descriptor.  The flowspec specifies the desired QoS in a
  201.       quantitative manner, e.g., the allowable delay, the average
  202.       bandwidth, the maximum burstiness, etc [ISInt93,IServ93].  It is
  203.       used to parametrize the packet scheduling mechanism in the router
  204.       or host.  The filterspec defines the set of data packets to
  205.       receive this service.
  206.  
  207.       A flowspec is opaque to RSVP.  However, given a pair of flowspecs
  208.       Fls1 and Fls2, RSVP needs to be able to: (1) determine whether
  209.       they are identical, (2) determine whether Fls1 ">" Fls2, or that
  210.       they cannot be compared, and (3) find a third flowspec Fls3 that
  211.       dominates both (Fls3 ">" Fls1 and Fls3 ">" Fls2), even if Fls1 and
  212.       Fls2 cannot be compared.  A flowspec may be a complex multi-
  213.       dimensional vector; the relationship Fls1 ">" Fls2, when it is
  214.       defined, indicates that Fls1 represents at least as strict a
  215.       request (and hence represents at least as large a resource
  216.       commitment) as Fls2.
  217.  
  218.       The data packets selected by a particular filterspec will
  219.       presumably be all be addressed to DestAddress.  The filterspec may
  220.       also select data packets only from particular senders Si; the set
  221.       of senders selected by a particular filter is referred to as the
  222.       "scope".  A filter may further reduce the data packet subset based
  223.       on flow demultiplexing fields such as a UDP port, or perhaps on
  224.       some hierarchical encoding bits within the application layer.
  225.  
  226.  
  227.  
  228.  
  229. Zhang, Braden et al       Expires: April 1994                   [Page 4]
  230.  
  231.  
  232.  
  233.  
  234. Internet Draft             RSVP Specification               October 1993
  235.  
  236.  
  237.    2.2 Reservation Styles
  238.  
  239.       RSVP has a number of distinct "reservation styles", which
  240.       determine the precise reservation model for applications.  The
  241.       following reservation styles have been defined so far; others may
  242.       be introduced in the future.
  243.  
  244.       1.   Wildcard-Filter
  245.  
  246.            Using the Wildcard-Filter (WF) style, a receiver creates a
  247.            single reservation, or resource "pipe", along each link,
  248.            shared among all senders for the given session.  The size of
  249.            this "pipe" is the maximum of the resource requests for that
  250.            link from all receivers, independent of the number of senders
  251.            using it.
  252.  
  253.            The term `wildcard' refers to a filter scope that implicitly
  254.            selects all senders, inplicitly extending to new senders as
  255.            soon as they start sending to the group.
  256.  
  257.       2.   Fixed-Filter
  258.  
  259.            Using the Fixed-Filter (FF) style, each receiver selects the
  260.            particular sender whose data packets it wants to receive, and
  261.            it specifies a corresponding flowspec for that sender.
  262.  
  263.            Receivers that select the same sender will share the
  264.            reservation for that sender (indeed, due to multicasting
  265.            there is only one stream of data packets from any Si in a
  266.            particular router, regardless of the number of receivers Rj
  267.            downstream).  The shared reservation for Si will be greater
  268.            than (in the sense of ">" as discussed earlier) or equal to
  269.            all of the individual flowspecs from receivers Rj that
  270.            selected Si.
  271.  
  272.            However, reservations for different senders are distinct;
  273.            they do NOT share a common pipe.  The total reservation on a
  274.            link for a given session is the sum over the reservations for
  275.            different senders.
  276.  
  277.            A Fixed-Filter reservation request from a particular receiver
  278.            Rj generally contains a list of Flow Descriptors, each
  279.            consisting of a filterspec (specifying some sender Si) and a
  280.            corresponding flowspec.  If a receiver using the FF
  281.            reservation style changes its sender selection during the
  282.            session, this is treated as a new reservation that is subject
  283.            to admission control and may fail.  The receiver may also
  284.            modify the flowspecs, again subject to admission control.
  285.  
  286.  
  287.  
  288. Zhang, Braden et al       Expires: April 1994                   [Page 5]
  289.  
  290.  
  291.  
  292.  
  293. Internet Draft             RSVP Specification               October 1993
  294.  
  295.  
  296.       3.   Dynamic-Filter
  297.  
  298.            Using the Dynamic-Filter (DF) style, each receiver creates N
  299.            distinct reservations to carry flows from up to N different
  300.            senders.  A DF style reservation also specifies a list of K
  301.            filterspecs (0 <= K <= N), defining particular senders to use
  302.            these reservations, as well as a common flowspec.  Like the
  303.            FF style, the DF style causes distinct reservations for
  304.            different senders.
  305.  
  306.            A later DF reservation from the same receiver may specify the
  307.            same value of N and the same common flowspec but a different
  308.            selection of particular senders, without a new admission
  309.            control check.  This is known as channel switching, in
  310.            analogy with a television set.  Each DF style reservation may
  311.            be said to be "owned" by the receiver that established it and
  312.            is permitted to switch channels (change senders) used by that
  313.            reservation.
  314.  
  315.            If a receiver using the DF reservation style changes the
  316.            number of distinct reservations N or the common flowspec,
  317.            this is treated as a new reservation that is subject to
  318.            admission control and may fail.  Those data packets for the
  319.            same session socket but from senders that are not currently
  320.            selected may either be dropped or simply sent best-effort.
  321.  
  322.       The essential difference between the FF and DF styles is that the
  323.       latter allows dynamic channel switching without admission control.
  324.       Once a DF-style reservation has been made, the receiver may switch
  325.       channels without danger of an admission control failure due to
  326.       limited resources (unless the route changes to a lower-capacity
  327.       path or new senders appear).
  328.  
  329.       In order to provide admission-free channel switching, the DF style
  330.       must cause the routers must reserve the requested bandwidth for
  331.       all the possible senders Si, even though some of this bandwidth
  332.       may be unused at any one time, or always.  DF reservations may
  333.       therefore have a significant cost to the Internet in under-
  334.       utilized reservations.
  335.  
  336.       Wildcard-Filter reservations are appropriate when the total
  337.       bandwidth required is independent of the number of senders.  This
  338.       is true for audio conferences, where a limited number of people
  339.       talk at once.  Thus, each receiver might issue a Wildcard-Filter
  340.       reservation for twice one audio channel (to allow some over-
  341.       speaking).  On the other hand, the Fixed-Filter and Dynamic-Filter
  342.       styles create independent reservations for the flows from
  343.       different senders; this is required for video signals, whose
  344.  
  345.  
  346.  
  347. Zhang, Braden et al       Expires: April 1994                   [Page 6]
  348.  
  349.  
  350.  
  351.  
  352. Internet Draft             RSVP Specification               October 1993
  353.  
  354.  
  355.       `silence' periods are typically uncoordinated among different
  356.       senders.
  357.  
  358.    2.3 RSVP Protocol Mechanisms
  359.  
  360.       2.3.1 RSVP Messages
  361.  
  362.          RSVP messages are sent as IP datagrams; thus, RSVP occupies the
  363.          place of a transport protocol in the protocol stack.  However,
  364.          like ICMP and IGMP, RSVP is really an Internet control
  365.          protocol; it does not carry any application data, and its
  366.          messages are processed by the routers in the path.
  367.  
  368.          Each receiver host sends RSVP reservation, or RESV, messages
  369.          into the Internet, carrying Flow Descriptors requesting the
  370.          desired reservation; see Figure 2.  These reservation messages
  371.          must follow the reverse of the routes the data packets will
  372.          use, all the way upstream to all the send that lie within the
  373.          scope of active reservations.  These RESV messages are finally
  374.          delivered to the sender hosts, so that the senders can set up
  375.          appropriate Traffic Control parameters for the first hop.
  376.  
  377.          In order to route the RESV messages in the reverse direction
  378.          from each receiver to all selected senders for a given session
  379.          socket, each sender must transmit RSVP PATH messages forward
  380.          along the uni-/multicast routes provided by the routing
  381.          protocol(s).  These Path messages store path state in all the
  382.          intermediate routers, effectively combining all the routing
  383.          trees given by the routing protocol for the same DestAddress.
  384.  
  385.  
  386.                Sender                                       Receiver
  387.                              _____________________
  388.                   Path -->  (                     )
  389.                 Si =======> (    Multicast        ) Path -->
  390.                   <-- Resv  (                     ) =========> Rj
  391.                             (    distribution     ) <-- Resv
  392.                             (_____________________)
  393.  
  394.                              Figure 2: RSVP Messages
  395.  
  396.  
  397.  
  398.          The minimum information content of a PATH message is a list of
  399.          sender IP addresses, since this is required for routing RESV
  400.          messages.  However, PATH messages may carry the following
  401.          additional information:
  402.  
  403.  
  404.  
  405.  
  406. Zhang, Braden et al       Expires: April 1994                   [Page 7]
  407.  
  408.  
  409.  
  410.  
  411. Internet Draft             RSVP Specification               October 1993
  412.  
  413.  
  414.          o    A template describing the format of data packets that the
  415.               sender will originate.
  416.  
  417.               This template takes the form of two bitstrings forming a
  418.               (value, mask) pair.  Zero mask bits represent "don't care"
  419.               (variable) bits in data packets.  If present, this
  420.               template is used by RSVP to validate the filters in a RESV
  421.               message.  Without such a template in the path state, there
  422.               will be no feedback (except poor service) to the receiver
  423.               that sets an impossible filter by mistake.
  424.  
  425.          o    A flowspec defining an upper bound on the traffic that
  426.               will be generated.
  427.  
  428.               This flowspec can be used by RSVP to prevent over-
  429.               reservation on the non-shared links starting at the sender
  430.               [RSVP93].
  431.  
  432.          A (template, flowspec) pair in a PATH message is called a
  433.          Sender Descriptor.
  434.  
  435.       2.3.2 Soft State
  436.  
  437.          To maintain reservation state, RSVP uses "soft state" in the
  438.          router and host nodes.  RSVP soft state is created and
  439.          maintained in two directions by PATH and RESV messages.  It is
  440.          periodically refreshed by messages that are identical to the
  441.          message that established the state, and it is removed at each
  442.          node by a timer-driven cleanup procedure if no refresh message
  443.          is received within a cleanup timeout interval.  If a route
  444.          changes, the next copy of the message will initialize the state
  445.          on the new route, while the state on the now-unused segment of
  446.          the route will time out.  Thus, whether a message is "new" or a
  447.          "refresh" is determined separately for each message at each
  448.          node, depending upon the state at that node.  (This document
  449.          will use the term "refresh message" in this effective sense, to
  450.          indicate an RSVP message that does not modify the existing
  451.          state at the node in question.)
  452.  
  453.          RSVP sends its messages as IP datagrams, without reliable
  454.          delivery.  If a reservation request fails, an RSVP error
  455.          message is returned to the receiver; however, RSVP sends no
  456.          positive acknowledgment messages to indicate success.  Periodic
  457.          transmission of refresh messages by hosts and routers should
  458.          replace any lost RSVP messages.
  459.  
  460.          If the set of senders Si or receivers Rj changes, or if any of
  461.          the reservation requests change, the RSVP state is adjusted
  462.  
  463.  
  464.  
  465. Zhang, Braden et al       Expires: April 1994                   [Page 8]
  466.  
  467.  
  468.  
  469.  
  470. Internet Draft             RSVP Specification               October 1993
  471.  
  472.  
  473.          accordingly.  To modify a reservation, a receiver simply starts
  474.          sending the new values; it is not necessary to "close" the old
  475.          reservation first.  RSVP believes the latest PATH and RESV
  476.          messages (ignoring the possibility of reordering).
  477.  
  478.          When a RESV message is received at a router or sender host, the
  479.          RSVP module checks whether the message is a new or modifedi
  480.          reservation request or whether it simply refreshes an existing
  481.          reservation.  A new or modified request is passed to the
  482.          admission control module for a decision.  If the reservation is
  483.          accepted, RSVP sets up (or modifies) the reservation and filter
  484.          state.  It also forwards the RESV message to the next reverse-
  485.          hop router(s) or sender host(s), using the path state.  If the
  486.          request is rejected, RSVP discards the Resv message and returns
  487.          a RSVP error message to the receiver host that originated it.
  488.          If the modification replaces some previous state, RSVP may
  489.          immediately remove the old state, or it may simply let the old
  490.          state time out since it is no longer being refreshed.
  491.  
  492.  
  493.           Previous      Incoming                      Outgoing
  494.           Hops          Interfaces                    Interfaces
  495.  
  496.           ______             _____________________
  497.          |      | Path -->  |                     |    Path -->
  498.          |      |-----------|                     |---------------
  499.          |______|  <-- Resv |                     |     <-- Resv
  500.                   data -->  |                     |    data -->
  501.                             |       Router        |
  502.           ______            |                     |
  503.          |      | Path -->  |                     |    Path -->
  504.          |      |-----------|                     |---------------
  505.          |______|  <-- Resv |                     |     <-- Resv
  506.                   data -->  |_____________________|    data -->
  507.  
  508.                            Figure 3: Router Using RSVP
  509.  
  510.  
  511.          Figure 3 illustrates the model of a router used by RSVP.  The
  512.          data arrives from a previous hop through a corresponding
  513.          incoming interface and departs through an outgoing interface.
  514.          The incoming interfaces shown in Figure 3 may be physical
  515.          interfaces (e.g., to point-to-point links), or they may be
  516.          logical interfaces, multiple paths using the same physical
  517.          interface to a shared medium (e.g., an Ethernet).  Output is
  518.          designated by the outgoing interface rather than by a "next
  519.          hop" address to be consistent with IP multicast routing.  Since
  520.          the same host may be both sender and receiver for a given
  521.  
  522.  
  523.  
  524. Zhang, Braden et al       Expires: April 1994                   [Page 9]
  525.  
  526.  
  527.  
  528.  
  529. Internet Draft             RSVP Specification               October 1993
  530.  
  531.  
  532.          session, the same physical interface may act in both the
  533.          incoming and outgoing roles.
  534.  
  535.       2.3.3 Merging RSVP Messages
  536.  
  537.          To control its protocol overhead, RSVP supports merging of
  538.          multiple PATH and RESV messages for the same session socket.
  539.          Those messages that cause a state change are forwarded without
  540.          delay, while the rest may be "merged" into fewer messages,
  541.          perhaps only one.  Merging requires synchronization among the
  542.          messages being merged.  This is accomplished by saving the
  543.          state of received messages, dropping the messages, and
  544.          periodically generating and forwarding cumulative messages in
  545.          their place.  Thus, refresh messages are created hop-by-hop, at
  546.          a rate determined by the refresh period.
  547.  
  548.          Messages that modify the state in a node ("new" messages) must
  549.          be forwarded without delay.  Thus, the refresh period does not
  550.          affect the rate at which new state propagates from end to end.
  551.  
  552.          For PATH messages, merging implies collecting together the
  553.          Sender Descriptors from multiple incoming messages into a
  554.          single outgoing PATH message.  For RESV messages, merging
  555.          generally implies that only the essential (e.g., the largest)
  556.          refresh reservation messages need be forwarded once per refresh
  557.          period; redundant messages can be dropped.  A successful
  558.          reservation request will propagate as far as the closest point
  559.          along the sink tree to the sender(s) where a reservation level
  560.          equal or greater than that being requested has been made.  At
  561.          that point, the merging process will drop it in favor of a
  562.          larger reservation.
  563.  
  564.          As a result of merging, the number of RSVP control messages
  565.          will increase less than linearly with the number of senders and
  566.          receivers in a session.  There is no merging across sessions,
  567.          however, so the number of RSVP messages will increase linearly
  568.          with the number of sessions.
  569.  
  570.          The refresh period and the cleanup timeout must obey some
  571.          general principles.
  572.  
  573.               A.   The cleanup timeout interval should be long enough to
  574.                    avoid reservation-flapping due to route-flapping.
  575.  
  576.                    If route flapping does occur, persistent state will
  577.                    allow duplicate reservations to be created along the
  578.                    alternate paths.  This duplication is desirable to
  579.                    prevent interruptions of service quality due to route
  580.  
  581.  
  582.  
  583. Zhang, Braden et al       Expires: April 1994                  [Page 10]
  584.  
  585.  
  586.  
  587.  
  588. Internet Draft             RSVP Specification               October 1993
  589.  
  590.  
  591.                    flapping.
  592.  
  593.  
  594.               B.   The refresh period should be short enough in order to
  595.                    adapt quickly to route changes.
  596.  
  597.  
  598.               C.   The refresh period must be long enough to control
  599.                    RSVP overhead.
  600.  
  601.          Applications may differ in their sensitivity to outages, and
  602.          should be able to have some control over the refresh period for
  603.          their session state.
  604.  
  605.    2.4 Host Model
  606.  
  607.       Before a session can be created, the session socket (comprised of
  608.       DestAddress and DestSID) must be assigned and communicated to all
  609.       the senders and receivers by some out-of-band mechanism.  In order
  610.       to join an RSVP session, the end systems perform the following
  611.       actions.
  612.  
  613.            H1   A receiver joins the multicast group specified by
  614.                 DestAddress.
  615.  
  616.  
  617.            H2   A potential sender starts sending RSVP PATH messages to
  618.                 the DestAddress.
  619.  
  620.  
  621.            H3   A receiver listens for PATH messages.
  622.  
  623.  
  624.            H4   A receiver starts sending appropriate RESV messages,
  625.                 specifying the desired Flow Descriptors.
  626.  
  627.       There are several synchronization issues.
  628.  
  629.       o    Suppose that a new sender starts sending data but there are
  630.            no receivers.  There will be no multicast routes beyond the
  631.            host (or beyond the first RSVP-capable router) along the
  632.            path; the data will be dropped at the first hop until
  633.            receivers(s) do appear (assuming a multicast routing protocol
  634.            that "prunes off" or otherwise avoids unnecessary paths).
  635.  
  636.       o    Suppose that a new sender starts sending PATH messages (H2)
  637.            and immediately starts sending data, and there are receivers
  638.            but no RESV messages have reached the sender yet (e.g.,
  639.  
  640.  
  641.  
  642. Zhang, Braden et al       Expires: April 1994                  [Page 11]
  643.  
  644.  
  645.  
  646.  
  647. Internet Draft             RSVP Specification               October 1993
  648.  
  649.  
  650.            because its PATH messages have not yet propagated to the
  651.            receiver(s)).  Then the initial data may arrive at receivers
  652.            without the desired QoS.
  653.  
  654.       o    If the receiver starts sending RESV messages (H4) before any
  655.            PATH messages have reached it, RSVP will return ERR messages.
  656.  
  657.            The receiver may simply choose to ignore such error messages,
  658.            or it may avoid them in one of two ways.  (1) It may
  659.            synchronize in a higher-level protocol, e.g., a conference
  660.            control protocol might ensures that RESV messages are not
  661.            sent by any participant until all have started to send PATH
  662.            messages.  (2) The receiver may synchronize using RSVP
  663.            messages, by waiting for PATH messages before sending RESV
  664.            messages.
  665.  
  666.       The interface (API) between RSVP and an application is not defined
  667.       in this protocol spec, as it may be host-system dependent.
  668.       However, Section 3.6.2 discusses the general requirements and
  669.       presents a generic API.
  670.  
  671.    2.5 Examples
  672.  
  673.       Figure 4 shows schematically a router with two previous hops
  674.       (labeled a and b) and two outgoing interfaces (labeled c and d).
  675.       There are three upstream senders; packets from sender S1 (S2 and
  676.       S3) arrive through previous hop a (b, respectively).  There are
  677.       also three downstream receivers; packets bound for R1 and R2 (R3)
  678.       are routed via outgoing interface c (d, respectively).
  679.  
  680.                          ________________
  681.                       a |                | c
  682.       ( S1 ) ---------->|                |----------> ( R1, R2)
  683.                         |     Router     |
  684.                       b |                | d
  685.       ( S2,S3 ) ------->|                |----------> ( R3 )
  686.                         |________________|
  687.  
  688.                         Figure 4: Router Configuration
  689.  
  690.  
  691.  
  692.       We use the following notation for a RESV message sent by receiver
  693.       Rj:
  694.  
  695.       1.   Wildcard-Filter
  696.  
  697.            WF( Rj; *{r})
  698.  
  699.  
  700.  
  701. Zhang, Braden et al       Expires: April 1994                  [Page 12]
  702.  
  703.  
  704.  
  705.  
  706. Internet Draft             RSVP Specification               October 1993
  707.  
  708.  
  709.            Here "*{r}" represents a Flow Descriptor with a "wildcard"
  710.            filter (choosing all senders) and a flowspec of quantity r.
  711.            For simplicity we imagine here that flowspecs are one-
  712.            dimensional, defining for example the average bandwidth, and
  713.            state them as a multiple of some unspecified base resource
  714.            quantity B.
  715.  
  716.       2.   Fixed-Filter
  717.  
  718.            FF(  Rj; S1{r1}, S2{r2}, ...)
  719.  
  720.            This message carries a list of sender, flowspec pairs, i.e.,
  721.            Flow Descriptors.
  722.  
  723.       3.   Dynamic-Filter
  724.  
  725.            DF( nB, Rj; ) or DF( nB, Rj; S1, ...)
  726.  
  727.            This message carries the number n of channels to be reserved,
  728.            each channel having bandwidth B.  It also has an list,
  729.            perhaps empty, of senders.  Since each channel must carry the
  730.            same bandwidth B, we omit flowspecs after the semicolon.
  731.  
  732.       Figure 5 shows Wildcard-Filter reservations.  The "Receive" column
  733.       shows the RESV messages received over outgoing interfaces c and d,
  734.       and the "Reserve" column shows the resulting reservation state for
  735.       each interface.   The "Send" column shows the RESV messages
  736.       forwarded to previous hops a and b.  In the "Reserve" column, each
  737.       box represents one reservation "channel", with the corresponding
  738.       filter.
  739.  
  740.       As a result of merging, only the message with the largest flowspec
  741.       is forwarded upstream to each previous hop.  When the flowspecs
  742.       are equal, the message whose receiver IP address is numerically
  743.       larger is sent.  Here we assume that IPaddr(R1) > IPaddr(R3) so
  744.       the R1 reservation is sent upstream.  Merging will therefore
  745.       delete the messages enclosed in square brackets.  In the outgoing
  746.       interface c, there is a common reserved channel shared by R1 and
  747.       R2.
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760. Zhang, Braden et al       Expires: April 1994                  [Page 13]
  761.  
  762.  
  763.  
  764.  
  765. Internet Draft             RSVP Specification               October 1993
  766.  
  767.  
  768.  
  769.                               |
  770.                Send           |      Reserve              Receive
  771.                               |
  772.                               |       ________
  773.         WF(R1; *{3B}) <- (a)  |  (c) | *{3B}  |    (c) <- WF(R1; *{3B})
  774.                               |      |________|
  775.        [ WF(R2; *{B}) <- (a)] |                  [ (c) <- WF(R2; *{B}) ]
  776.                               |
  777.        [ WF(R3; *{B}) <- (a)] |
  778.       ------------------------|------------------------------------------
  779.                               |       _______
  780.         WF(R1; *{3B}) <- (b)  |  (d) | *{B}  |     (d) <- WF(R3; *{B})
  781.                               |      |_______|
  782.        [ WF(R2; *{B}) <- (b)] |
  783.                               |
  784.        [ WF(R3; *{B}) <- (b)] |
  785.  
  786.                 Figure 5: Wildcard-Filter Reservation Example
  787.  
  788.  
  789.  
  790.       Figure 6 shows Fixed-Filter style reservations.  Merging takes
  791.       place among the flow descriptors (i.e., filter spec, flowspec
  792.       pairs); the unmerged messages are not shown.  For example, the
  793.       message forwarded to previous hop b, towards S2 and S3, contains
  794.       flow descriptors received from outgoing interfaces c and d.
  795.       Similarly, when FF(R2; S1{B}) and FF(R3; S1{3B}) are merged, the
  796.       result is the single message FF(R3; S1{3B}) sent to previous hop
  797.       a, towards S1.
  798.  
  799.       For each outgoing interface, there is a private reservation for
  800.       each source that has been requested, but this private reservation
  801.       is shared among the receivers that made the request.
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819. Zhang, Braden et al       Expires: April 1994                  [Page 14]
  820.  
  821.  
  822.  
  823.  
  824. Internet Draft             RSVP Specification               October 1993
  825.  
  826.  
  827.  
  828.                         |
  829.          Send           |       Reserve              Receive
  830.                         |
  831.                         |       ________
  832.   FF(R3; S1{3B}) <- (a) |  (c) | S1{B}  |   (c) <- FF(R2; S1{B}, S2{5B})
  833.                         |      |________|
  834.                         |      | S2{5B} |
  835.                         |      |________|
  836. ------------------------|---------------------------------------------
  837.                         |       ________
  838.                  <- (b) |  (d) | S1{3B} |   (d) <- FF(R3; S1{3B}, S3{B})
  839.   FF(R3; S2{5B}, S3{B}) |      |________|
  840.                         |      | S3{B}  |
  841.                         |      |________|
  842.  
  843.                Figure 6: Fixed-Filter Reservation Example
  844.  
  845.  
  846.  
  847.       Figure 7 shows an example of Dynamic-Filter reservations.  Within
  848.       the reservation boxes, the receiver that owns the reservation is
  849.       shown followed by a colon.  R2 and R3 have made reservations for
  850.       which there is currently no filter, as indicated by a filter of
  851.       `?'.
  852.  
  853.                         |
  854.          Send           |      Reserve              Receive
  855.                         |
  856.                         |       ___________
  857.   DF(2, R1; S1) <- (a)  |  (c) | R1: S1{B} |   (c) <- DF(2, R1; S1, S2)
  858.                         |      |___________|
  859.     DF(2, R2; ) <- (a)  |      | R1: S2{B} |   (c) <- DF(2, R2; S2)
  860.                         |      |[R2: S2{B}]|
  861.   DF(2, R3; S1) <- (a)  |      |___________|
  862.                         |      | R2:  ?{B} |
  863.                         |      |___________|
  864. ------------------------|---------------------------------------------
  865.                         |       ___________
  866.   DF(2, R1; S2) <- (b)  |  (d) | R3: S1{B} |    (d) <- DF(2, R3; S1)
  867.                         |      |___________|
  868.   DF(2, R2; S2) <- (b)  |      | R3:  ?{B} |
  869.                         |      |___________|
  870.     DF(2, R3; ) <- (b)  |
  871.  
  872.               Figure 7: Dynamic-Filter Reservation Example
  873.  
  874.  
  875.  
  876.  
  877.  
  878. Zhang, Braden et al       Expires: April 1994                  [Page 15]
  879.  
  880.  
  881.  
  882.  
  883. Internet Draft             RSVP Specification               October 1993
  884.  
  885.  
  886.       Both R1 and R2 have requested reservations for S2.  Since there is
  887.       only one stream of packets from S2, only R1's reservation is
  888.       actually made.  However, the router keeps a record of R2's request
  889.       as a "hidden reservation", shown in square brackets.  If R1
  890.       removes its reservation for S2, the node must check for a hidden
  891.       reservation for the same source, so that it can reassign the
  892.       channel to R2 without waiting for R2's next refresh.  This use of
  893.       hidden reservations for Dynamic-Filter reservations is necessary
  894.       to avoid new admission control decisions (which might fail) and to
  895.       ensure continuity of service.
  896.  
  897.       A router should not reserve more Dynamic-Filter channels than the
  898.       number of upstream sources.  Thus, in Figure 7, both R1 and R2
  899.       request that admission control admit two channels worth of
  900.       bandwidth.  However, there are only 3 sources upstream from this
  901.       point, so these requests are satisfied with a total of 3 channel
  902.       reservations.
  903.  
  904.       Since there is only one source upstream from previous hop b, the
  905.       first parameter of the DF message (the count of channels to be
  906.       reserved) could be decreased to 1 in the forwarded reservations.
  907.       However, this is unnecessary because the routers upstream will
  908.       reserve only one channel, regardless.
  909.  
  910.       We note that Dynamic-Filter requests cannot be merged, since they
  911.       tie each reservation to a particular owner.  A node is permitted
  912.       to include Flow Descriptors that are not relevant to the path
  913.       (i.e., not upstream along that path).  Thus, in Figure 7, the node
  914.       could forward each of the three RESV messages exactly as received
  915.       from c and d, to both previous hops a and b; the previous hop
  916.       would ignore the irrelevant Flow Descriptors in each case.
  917.  
  918.       As another example of these concepts, Figure 8 shows the previous
  919.       hop router on incoming interface (a) in Figure 7.  Here there are
  920.       two hidden reservations.
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937. Zhang, Braden et al       Expires: April 1994                  [Page 16]
  938.  
  939.  
  940.  
  941.  
  942. Internet Draft             RSVP Specification               October 1993
  943.  
  944.  
  945.  
  946.             Send           |      Reserve              Receive
  947.                            |       ___________
  948.      DF(2, R1; S1) <- (a)  |  (c) | R1: S1{B} |   (c) <- DF(2, R1; S1)
  949.                            |      |           |
  950.        DF(2, R2; ) <- (a)  |      |[R2:  ?{B}]|   (c) <- DF(2, R2; )
  951.                            |      |           |
  952.      DF(2, R3; S1) <- (a)  |      |[R2: S1{B}]|   (c) <- DF(2, R3; S1)
  953.                            |      |___________|
  954.  
  955.              Figure 8: Previous Hop to Figure 7 interface (a).
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996. Zhang, Braden et al       Expires: April 1994                  [Page 17]
  997.  
  998.  
  999.  
  1000.  
  1001. Internet Draft             RSVP Specification               October 1993
  1002.  
  1003.  
  1004. 3. Functional Specification
  1005.  
  1006.    There are currently three types of RSVP messages: Path, Resv, and
  1007.    ERR.  A fourth type, TEARDOWN, is under consideration.
  1008.  
  1009.    3.1 Message Formats
  1010.  
  1011.       3.1.1 Path Message
  1012.  
  1013.              0             1              2             3
  1014.       +-------------+-------------+-------------+-------------+
  1015.       | Vers | Type |    Flags    |       RSVP Checksum       |
  1016.       +-------------+-------------+-------------+-------------+  ---
  1017.       |                      DestAddress                      | Session
  1018.       +-------------+-------------+-------------+-------------+
  1019.       |                        DestSID                        | Socket
  1020.       +-------------+-------------+-------------+-------------+  ---
  1021.       |                    Refresh Period                     |
  1022.       +-------------+-------------+-------------+-------------+
  1023.       |                    State TTL Time                     |
  1024.       +-------------+-------------+-------------+-------------+
  1025.       |                Previous Hop Address                   |
  1026.       +-------------+-------------+-------------+-------------+
  1027.       |       ///////////////     |         SD Count          |
  1028.       +-------------+-------------+-------------+-------------+
  1029.       |               Sender Descriptor List                  |
  1030.       +-------------+-------------+-------------+-- ...
  1031.  
  1032.  
  1033.  
  1034.          IP Fields:
  1035.  
  1036.               Protocol
  1037.  
  1038.                    46
  1039.  
  1040.               IP Source Address
  1041.  
  1042.                    The IP address of the host or router sending this
  1043.                    message.
  1044.  
  1045.               IP Destination Address
  1046.  
  1047.                    The IP address of the data destination (DestAddress).
  1048.  
  1049.          RSVP Fields:
  1050.  
  1051.               Vers
  1052.  
  1053.  
  1054.  
  1055. Zhang, Braden et al       Expires: April 1994                  [Page 18]
  1056.  
  1057.  
  1058.  
  1059.  
  1060. Internet Draft             RSVP Specification               October 1993
  1061.  
  1062.  
  1063.                    Version number.  This is version 1.
  1064.  
  1065.               Type
  1066.  
  1067.                    1  = Path Message
  1068.  
  1069.               Flags
  1070.  
  1071.                    1 = No-Refresh
  1072.  
  1073.                         A PATH message received with this flag bit on
  1074.                         will be forwarded with no (further) merging, the
  1075.                         path state TTL timer(s) will not be reset (as if
  1076.                         no refresh message had been received), and a
  1077.                         refresh message will not be generated during the
  1078.                         current refresh period for the senders listed,
  1079.                         However, if there is no path state a PATH
  1080.                         message containing this flag bit will be
  1081.                         ignored.
  1082.  
  1083.                         For further discussion of the use of this bit,
  1084.                         see Section 3.3 below.
  1085.  
  1086.                    8 = Drop
  1087.  
  1088.                         If this flag bit is on then data packets will be
  1089.                         dropped when they are destined to this session
  1090.                         but their sender is not currently selected by
  1091.                         any filter.  If this flag bit is off, such data
  1092.                         packets will still be forwarded but without a
  1093.                         reservation, i.e., using a best-effort class.
  1094.  
  1095.               RSVP Checksum
  1096.  
  1097.                    A standard TCP/UDP checksum, over the contents of the
  1098.                    RSVP message with the checksum field replaced by
  1099.                    zero.
  1100.  
  1101.               DestAddress, DestSID
  1102.  
  1103.                    The IP address and stream Id identifying the session,
  1104.                    i.e., the session socket.
  1105.  
  1106.               Previous Hop Address
  1107.  
  1108.                    The IP address of the interface through which the
  1109.                    host or router last forwarded this message.
  1110.  
  1111.  
  1112.  
  1113.  
  1114. Zhang, Braden et al       Expires: April 1994                  [Page 19]
  1115.  
  1116.  
  1117.  
  1118.  
  1119. Internet Draft             RSVP Specification               October 1993
  1120.  
  1121.  
  1122.                    The Previous Hop Address is used to support reverse-
  1123.                    path forwarding of RESV messages.  This field is
  1124.                    initialized by a sender to its IP address (see IP
  1125.                    Source Address above) and must be updated at each
  1126.                    router hop as the PATH message is forwarded.
  1127.  
  1128.               Refresh Period
  1129.  
  1130.                    This field specifies the refresh timeout period in
  1131.                    milliseconds.  See Section 3.3 below.
  1132.  
  1133.               State TTL Time
  1134.  
  1135.                    This field specifies the time-to-live for soft state,
  1136.                    in milliseconds.  It determines the cleanup timeout
  1137.                    period; see Section 3.3 below.
  1138.  
  1139.                    See Section 3.2 below.
  1140.  
  1141.               SD Count
  1142.  
  1143.                    Count of Sender Descriptors that follow.
  1144.  
  1145.               Sender Descriptor List
  1146.  
  1147.                    A list of Sender Descriptors (see below).  The order
  1148.                    of entries in this list is irrelevant.
  1149.  
  1150.  
  1151.          Each sender must periodically send a PATH message containing a
  1152.          single Sender Descriptor describing its own data stream.  These
  1153.          messages are addressed to the uni-/multicast destination
  1154.          address for the session, and they are forwarded to all
  1155.          receivers, following the same paths as a data packet from the
  1156.          same sender.  PATH messages are received and processed locally
  1157.          to create path state at each intermediate router along the
  1158.          path.
  1159.  
  1160.          If an error is encountered while processing a PATH message, an
  1161.          RSVP ERR message is sent to all the sender hosts listed in the
  1162.          Sender Descriptor List.
  1163.  
  1164.          PATH  messages are distributed from senders to receivers along
  1165.          the exact paths that the data will traverse, using uni-
  1166.          /multicast routing.  This distribution actually takes place
  1167.          hop-by-hop, allowing RSVP in each router along the path to
  1168.          observe and modify the message.  Routing of PATH messages is
  1169.          based on the sender address(es) from the Sender Descriptor(s),
  1170.  
  1171.  
  1172.  
  1173. Zhang, Braden et al       Expires: April 1994                  [Page 20]
  1174.  
  1175.  
  1176.  
  1177.  
  1178. Internet Draft             RSVP Specification               October 1993
  1179.  
  1180.  
  1181.          not the IP source address.  This is necessary to prevent loops;
  1182.          see Section 3.2.
  1183.  
  1184.          Each Sender Descriptor consists of a sender template that
  1185.          defines the format of data packets and a corresponding Flowspec
  1186.          that describes the traffic characteristics.   The template is
  1187.          composed of an explicit IP address plus a variable-length
  1188.          mask-and-value pair VF, in the following format:
  1189.  
  1190.  
  1191.           +-----------+-----------+-----------+-----------+
  1192.           |                   Sender IP Address           |
  1193.           +-----------+-----------+-----------+-----------+
  1194.           |       VFlength        |      VFoffset         |
  1195.           +-----------+-----------+-----------+-----------+  ---
  1196.           |                   V: VF Value Part            | 4*VFlength
  1197.           /                                               / octets
  1198.           /                                               /
  1199.           +-----------+-----------+-----------+-----------+  ---
  1200.           |                   M: VF Mask Part             | 4*VFlength
  1201.           /                                               / octets
  1202.           /                                               /
  1203.           +-----------+-----------+-----------+-----------+  ---
  1204.  
  1205.  
  1206.          The value M and the mask V each have length 4*VFlength octets.
  1207.          M and V define a filter using a simple mask-and-match algorithm
  1208.          applied to the packet at 4*VFoffset octets from the beginning
  1209.          with the internet layer header.  The VF part should not include
  1210.          the sender IP address or DestAddress; RSVP will effectively
  1211.          embed these explicit addresses into the template before using
  1212.          it to validate a filterspec.
  1213.  
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232. Zhang, Braden et al       Expires: April 1994                  [Page 21]
  1233.  
  1234.  
  1235.  
  1236.  
  1237. Internet Draft             RSVP Specification               October 1993
  1238.  
  1239.  
  1240.       3.1.2 Resv Message
  1241.  
  1242.          RESV messages are sent from receivers to senders along reverse
  1243.          paths established by PATH messages.
  1244.  
  1245.              0             1              2             3
  1246.       +-------------+-------------+-------------+-------------+
  1247.       | Vers | Type |    Flags    |       RSVP Checksum       |
  1248.       +-------------+-------------+-------------+-------------+  ---
  1249.       |                      DestAddress                      | Session
  1250.       +-------------+-------------+-------------+-------------+
  1251.       |                        DestSID                        | Socket
  1252.       +-------------+-------------+-------------+-------------+  ---
  1253.       |                    Refresh Period                     |
  1254.       +-------------+-------------+-------------+-------------+
  1255.       |                    State TTL Time                     |
  1256.       +-------------+-------------+-------------+-------------+
  1257.       |                     RecvAddress                       |
  1258.       +-------------+-------------+-------------+-------------+
  1259.       | Dynamic Reservation Count |         FD Count          |
  1260.       +-------------+-------------+-------------+-------------+
  1261.       |                Flow Descriptor List                   |
  1262.       +-------------+-------------+-------------+-- ...
  1263.  
  1264.          The fields are the same as defined earlier for a PATH message,
  1265.          except for the following:
  1266.  
  1267.  
  1268.          IP Fields:
  1269.  
  1270.               IP Source Address
  1271.  
  1272.                    The IP address of the host or router sending this
  1273.                    message.
  1274.  
  1275.               IP Destination Address
  1276.  
  1277.                    The IP address of the next-hop router or host to
  1278.                    which this message is being sent.
  1279.  
  1280.  
  1281.          RSVP Fields:
  1282.  
  1283.               Type
  1284.  
  1285.                    2 = Resv Message
  1286.  
  1287.               Flags
  1288.  
  1289.  
  1290.  
  1291. Zhang, Braden et al       Expires: April 1994                  [Page 22]
  1292.  
  1293.  
  1294.  
  1295.  
  1296. Internet Draft             RSVP Specification               October 1993
  1297.  
  1298.  
  1299.                    1 = No-Refresh
  1300.  
  1301.                         A RESV message received with this flag bit on
  1302.                         will be forwarded without (further) merging, the
  1303.                         TTL timer for the reservation state to which it
  1304.                         refers will not be reset (as if no refresh
  1305.                         message had been received), and no hop-by-hop
  1306.                         refresh message will be generated during the
  1307.                         current refresh period for the receiver
  1308.                         specified by RecvAddress.  However, if there is
  1309.                         no reservation state for this receiver or no
  1310.                         path state for this session, a Resv message
  1311.                         containing this flag bit will be ignored.
  1312.  
  1313.                         For further discussion of the use of this bit,
  1314.                         see Section 3.3 section below.
  1315.  
  1316.                    The following flag bits indicate the reservation
  1317.                    style.
  1318.  
  1319.                    2 = Fixed-Filter
  1320.  
  1321.                    4 = Dynamic-Filter
  1322.  
  1323.               RecvAddress
  1324.  
  1325.                    The IP address of the receiver that originated this
  1326.                    message.
  1327.  
  1328.               Dynamic Reservation Count
  1329.  
  1330.                    The number of channels to be reserved, for a
  1331.                    Dynamic-Filter style reservation.
  1332.  
  1333.                    If the ResvStyle is Dynamic-Filter, this integer
  1334.                    value must be constant and equal or greater than (FD
  1335.                    Count).  For other ResvStyles, this field must be
  1336.                    zero.
  1337.  
  1338.               FD Count
  1339.  
  1340.                    Count of Filter Specs in the Flow Descriptor List.
  1341.  
  1342.               Flow Descriptor List
  1343.  
  1344.                    A list of Flow Descriptors, i.e., (Filterspec,
  1345.                    flowspec) pairs, to define individual reservations
  1346.                    for Fixed-Filter and Dynamic-Filter styles.  The
  1347.  
  1348.  
  1349.  
  1350. Zhang, Braden et al       Expires: April 1994                  [Page 23]
  1351.  
  1352.  
  1353.  
  1354.  
  1355. Internet Draft             RSVP Specification               October 1993
  1356.  
  1357.  
  1358.                    first entry in the list may have special meaning (see
  1359.                    below); the order of later entries is irrelevant.
  1360.  
  1361.  
  1362.          Each Flow Descriptor has the following form:
  1363.  
  1364.  
  1365.          +-------------+-------------+-------------+----------//-+
  1366.          |  FiltSLen   |       Filter Spec ...                   |
  1367.          +-------------+-------------+-------------+----------//-+
  1368.          |  FlowSLen   |                ... Flow Spec ...        |
  1369.          +-------------+-------------+-------------+----------//-+
  1370.  
  1371.          Here FiltSLen and FlowSLen are one-octet fields specifying the
  1372.          lengths in octets (including the length byte) of the Filterspec
  1373.          and flowspec, respectively.
  1374.  
  1375.          A Wildcard-Filter style reservation is encoded as a special
  1376.          case of a Fixed-Filter reservation: a single Fixed-Filter
  1377.          channel in which the Filterspec specifies the wild-card filter,
  1378.          i.e., it selects packets from all senders Si to the given
  1379.          session socket.
  1380.  
  1381.          The following specific rules hold for different reservation
  1382.          styles.
  1383.  
  1384.          o    Wildcard-Filter
  1385.  
  1386.               To obtain Wildcard-Filter service, set FD Count = 1 and
  1387.               include a single Flow Descriptor whose Filterspec part is
  1388.               a wild card, i.e., selects all senders.  and whose
  1389.               flowspec part defines the desired flow parameters.
  1390.  
  1391.          o    Fixed-Filter
  1392.  
  1393.               Include a list of FD Count >= 1 Flow Descriptors, each
  1394.               defining a sender Filterspec and a corresponding flowspec.
  1395.  
  1396.          o    Dynamic-Filter
  1397.  
  1398.               Include max(1, FD Count) Flow Descriptors in the message.
  1399.               Here the FD Count specifies the number of sender
  1400.               Filterspecs that are included.  If DC is the Dynamic
  1401.               Reservation Count, then DC >= FD Count >= 0.
  1402.  
  1403.               The Flowspec part of the first Flow Descriptor defines the
  1404.               desired size of all the DC channels that are reserved.
  1405.               The Flowspec parts of later Flow Descriptors (if any) are
  1406.  
  1407.  
  1408.  
  1409. Zhang, Braden et al       Expires: April 1994                  [Page 24]
  1410.  
  1411.  
  1412.  
  1413.  
  1414. Internet Draft             RSVP Specification               October 1993
  1415.  
  1416.  
  1417.               ignored.
  1418.  
  1419.       3.1.3 Err Message
  1420.  
  1421.                 0             1              2             3
  1422.          +-------------+-------------+-------------+-------------+
  1423.          | Vers | Type |    Flags    |       RSVP Checksum       |
  1424.          +-------------+-------------+-------------+-------------+  ---
  1425.          |                      DestAddress                      | Session
  1426.          +-------------+-------------+-------------+-------------+
  1427.          |                        DestSID                        | Socket
  1428.          +-------------+-------------+-------------+-------------+  ---
  1429.          |  Error Code | Error Value |        List Count         |
  1430.          +-------------+-------------+-------------+-------------+
  1431.          |              Sender|Flow Descriptor List              |
  1432.          +-------------+-------------+-------------+-- ...
  1433.  
  1434.          The fields are the same as in a PATH message, defined earlier,
  1435.          except for the following:
  1436.  
  1437.  
  1438.          RSVP Fields:
  1439.  
  1440.               RSVPType
  1441.  
  1442.                    4 = Err message
  1443.  
  1444.               Flags
  1445.  
  1446.                    0xxxxxxx = Towards receiver(s)
  1447.  
  1448.                    1xxxxxxx = Towards sender(s)
  1449.  
  1450.               Error Code
  1451.  
  1452.                    A one-octet error description.
  1453.  
  1454.                         01 = No path information for this Resv (R)
  1455.  
  1456.                         02 = No Sender information for this Resv (R)
  1457.  
  1458.                              There is path information, but it does not
  1459.                              include the sender specified in one or more
  1460.                              of the Filterspecs listed in the Resv
  1461.                              messager.
  1462.  
  1463.                         03 = Insufficient memory (S,R)
  1464.  
  1465.  
  1466.  
  1467.  
  1468. Zhang, Braden et al       Expires: April 1994                  [Page 25]
  1469.  
  1470.  
  1471.  
  1472.  
  1473. Internet Draft             RSVP Specification               October 1993
  1474.  
  1475.  
  1476.                         04 = Incorrect Dynamic Reservation Count (R)
  1477.  
  1478.                              Dynamic Reservation Count is zero or less
  1479.                              than FD Count.
  1480.  
  1481.                         05 = Reservation problem (R)
  1482.  
  1483.                              The Error Value octet an error code
  1484.                              specific to a lower-level routine.
  1485.                              Possible reasons include: not enough
  1486.                              resource available, flowspec syntax error,
  1487.                              flowspec value error (internal
  1488.                              inconsistencies of values), or Flowspec
  1489.                              feature not supported.
  1490.  
  1491.                         07 = Unknown RSVPType field.
  1492.  
  1493.                         08 = Unknown RSVP version.
  1494.  
  1495.                         09 = FD Count Wrong
  1496.  
  1497.                              FD Count does not match length of message.
  1498.  
  1499.  
  1500.               Error Value
  1501.  
  1502.                    Specific cause of the error described by the Error
  1503.                    Code.
  1504.                         Meanings are generally defined outside RSVP.
  1505.  
  1506.  
  1507.               Sender|Flow Descriptor List
  1508.  
  1509.                    Optional list of Sender Descriptors (towards sender)
  1510.                    or Flow Descriptors (towards receiver) indicating
  1511.                    which message triggered the error.
  1512.  
  1513.  
  1514.          The message may include a list of one or more descriptors to
  1515.          which the same error applies.  An acceptable implementation may
  1516.          send a single descriptor per ERR message, and may therefore
  1517.          send multiple ERR messages as the result of one PATH or RESV
  1518.          message.
  1519.  
  1520.          If an error is encountered while processing a RESV message, an
  1521.          RSVP ERR message must be sent to all receivers responsible for
  1522.          the reservation.  However, in the case of shared Fixed-Filter
  1523.          reservations, the node that detects the error does not have a
  1524.  
  1525.  
  1526.  
  1527. Zhang, Braden et al       Expires: April 1994                  [Page 26]
  1528.  
  1529.  
  1530.  
  1531.  
  1532. Internet Draft             RSVP Specification               October 1993
  1533.  
  1534.  
  1535.          record of all the responsible receivers; the merging process
  1536.          downstream will have dropped all but one of the receiver
  1537.          identities.  Therefore, the Err message is addressed to the
  1538.          session DestAddress and uni-/multicast to all receivers
  1539.          downstream from the node detecting the error.
  1540.  
  1541.          This may deliver the ERR message to irrelevant receivers as
  1542.          well as all relevant ones.  The API in the receiver hosts is
  1543.          therefore asked to filter such ERR messages, delivering them
  1544.          only to those applications that have made a reservation for the
  1545.          sender specified in the message.
  1546.  
  1547.       3.1.4 Tear Message
  1548.  
  1549.          The TEARDOWN message is intended to force state to be deleted
  1550.          immediately, without waiting for the cleanup timeout period.
  1551.          It is an optimization, to allow resources to be freed more
  1552.          quickly.  However, like the other RSVP messages, it is not
  1553.          reliably delivered.
  1554.  
  1555.          State can only be removed by TEARDOWN if it is not shared.  In
  1556.          particular, Wildcard-Filter and Fixed-Filter reservations may
  1557.          be shared among multiple receivers, and due to merging RSVP
  1558.          does not keep track of all the responsible receivers; in these
  1559.          cases, teardown is not possible.
  1560.  
  1561.          A more complete definition of TEARDOWN messages is future work.
  1562.  
  1563.    3.2 Avoiding Message Loops
  1564.  
  1565.       RSVP routes its control messages, and every routing procedure must
  1566.       avoid looping packets.  The merging of RSVP messages delays
  1567.       forwarding at each node for up to one refresh period.  This may
  1568.       avoid high-speed loop, but there can still be "slow" loops,
  1569.       clocked by the refresh period; the effect of such slow loops is to
  1570.       keep state active forever, even if the end nodes have ceased
  1571.       refreshing it.  RSVP uses the following rules to prevent looping
  1572.       messages.
  1573.  
  1574.  
  1575.       1.   When an RSVP message is received on through particular
  1576.            incoming Interface F, the message must not be forwarded out F
  1577.            as an outgoing interface.  This implies that RSVP must keep
  1578.            track of the interface through which each message is
  1579.            received, to avoid forwarding it out that interface.  Note
  1580.            that, although RSVP distinguishes incoming from outgoing
  1581.            interfaces, in many cases the same physical interface will
  1582.            play both roles.
  1583.  
  1584.  
  1585.  
  1586. Zhang, Braden et al       Expires: April 1994                  [Page 27]
  1587.  
  1588.  
  1589.  
  1590.  
  1591. Internet Draft             RSVP Specification               October 1993
  1592.  
  1593.  
  1594.       2.   When a PATH message is received, a route must be computed for
  1595.            each of its sender Flow Descriptors.  These routes, obtained
  1596.            from the uni/multicast routing table, generally depend upon
  1597.            the (sender host address, destination address) pairs.  Each
  1598.            route consists of a list of outgoing interfaces; these lists
  1599.            (with the incoming interfaces deleted by rule (1)) are used
  1600.            to create merged PATH messages to be forwarded through the
  1601.            outgoing interfaces.
  1602.  
  1603.            Assuming that multicast routing is free of loops, PATH
  1604.            messages cannot loop even in a topology with cycles.
  1605.  
  1606.            Since PATH messages don't loop, they create path state
  1607.            defining a loop-free path to each sender.  As a result, RESV
  1608.            messages directed to particular senders cannot loop.
  1609.            However, this cannot protect against looping RESV messages
  1610.            that are directed towards all senders ("wildcard" sender).
  1611.            The following three rules are needed for this purpose.
  1612.  
  1613.       3.   A RESV message whose RecvAddress matches one of the IP
  1614.            addresses of the local node must be discarded without
  1615.            processing.
  1616.  
  1617.       4.   Each RESV message carries a receiver address.  When the
  1618.            choice of address to place in a merged RESV message is
  1619.            otherwise arbitrary, RSVP must use the IP address that is
  1620.            numerically largest.
  1621.  
  1622.       5.   When a RESV message is received, the Reverse Path Forwarding
  1623.            rule is applied to the receiver address in the message: the
  1624.            message is discarded unless it arrived on the interface that
  1625.            is the preferred route to the receiver.
  1626.  
  1627.       Figure 9 illustrates the effect of the rule (1) applied to RESV
  1628.       messages.  It shows a transit router, with one sender and one
  1629.       receiver on each side; interfaces a and c therefore are both
  1630.       outgoing interfaces and physical previous hops.  Both receivers
  1631.       are making a Wildcard-Filter style reservation, in which the RESV
  1632.       message is to be forwarded to all previous hops for senders in the
  1633.       group, with the exception of the interface through which it
  1634.       arrived.
  1635.  
  1636.  
  1637.  
  1638.  
  1639.  
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645. Zhang, Braden et al       Expires: April 1994                  [Page 28]
  1646.  
  1647.  
  1648.  
  1649.  
  1650. Internet Draft             RSVP Specification               October 1993
  1651.  
  1652.  
  1653.                          ________________
  1654.                       a |                | c
  1655.       ( R1, S1 ) <----->|     Router     |<-----> ( R2, S2 )
  1656.                         |________________|
  1657.  
  1658.           Send & Receive on (a)   |      Send & Receive on (c)
  1659.                                   |
  1660.         WF(R2; *{3B}) <-- (a)     |   (c) <-- WF(R2; *{3B})
  1661.                                   |
  1662.         WF(R1; *{4B}) --> (a)     |   (c) --> WF(R1; *{4B})
  1663.                                   |
  1664.                                   |
  1665.            Reserve on (a)         |         Reserve on (c)
  1666.               __________          |        __________
  1667.              |  * {4B}  |         |       |   * {3B} |
  1668.              |__________|         |       |__________|
  1669.                                   |
  1670.  
  1671.               Figure 9: Example: Rule (1) for Preventing Loops.
  1672.  
  1673.  
  1674.  
  1675.    3.3 Soft State Management
  1676.  
  1677.       The RSVP state associated with a session in a particular node is
  1678.       divided into atomic elements that are created, refreshed, and
  1679.       timed out independently.  The atomicity is determined by the
  1680.       requirement that any sender or receiver may enter or leave the
  1681.       session at any time, and its state should be created and timed out
  1682.       independently.
  1683.  
  1684.       Management of RSVP state is complex because there is not generally
  1685.       a one-to-one correspondence between state carried in RSVP control
  1686.       messages and the resulting state in nodes.  Due to merging, a
  1687.       single message contain state referring to multiple stored
  1688.       elements.  Conversely, due to reservation sharing, a single stored
  1689.       state element may depend upon (typically, the maximum of) state
  1690.       values received in multiple control messages.
  1691.  
  1692.       For each element, there are two time parameters controlling the
  1693.       maintenance of soft state: the refresh period R and the TTL
  1694.       (time-to-live) value T.  R specifies the period between successive
  1695.       refresh messages over the same link.  T controls how long state
  1696.       will be retained after refreshes stop appearing.
  1697.  
  1698.       PATH and RESV messages specify both R and T.  When messages are
  1699.       merged and forwarded to the next hop, R should be the minimum R
  1700.       that has been received, and T should be the maximum T that has
  1701.  
  1702.  
  1703.  
  1704. Zhang, Braden et al       Expires: April 1994                  [Page 29]
  1705.  
  1706.  
  1707.  
  1708.  
  1709. Internet Draft             RSVP Specification               October 1993
  1710.  
  1711.  
  1712.       been received.   Thus, the largest T determines how long state is
  1713.       retained, and the smallest R determines the responsiveness of RSVP
  1714.       to route changes.  In the first hop, they are expected to be
  1715.       equal.  The RSVP API should set a configurable default value,
  1716.       which can be overridden by an application for a particular
  1717.       session.
  1718.  
  1719.       To avoid gaps in user service due to lost RSVP messages, RSVP
  1720.       should be forgiving about missing refresh messages.  A node should
  1721.       not discard an RSVP state element until K * Tmax has elapsed
  1722.       without a refresh message, where Tmax is the maximum of the T
  1723.       values it has received.  K is some small integer; K-1 successive
  1724.       messages may be lost before state is deleted.  Currently K = 3 is
  1725.       suggested.
  1726.  
  1727.       Let X indicate a particular message type (either "Path" or "Resv")
  1728.       and a particular session.  Then each X message from node a to node
  1729.       b carries refresh period Rab and TTL time Tab.
  1730.  
  1731.       o    As X messages arrive at node b, the node computes and saves
  1732.            both the min over the Rab values (min(Rab)) and the max over
  1733.            the Tab values (max(Tab)) from these messages.
  1734.  
  1735.       o    The node uses K * max(Tab) as its cleanup timeout interval.
  1736.  
  1737.       o    The node uses min(Rab's) as the refresh period.
  1738.  
  1739.       o    Each refresh message forwarded by node b to node c has Tbc =
  1740.            max(Tab) and Rbc = min(Rab)
  1741.  
  1742.       o    A node may impose an upper bound Tmax and a lower bound Rmin,
  1743.            set by configuration information, and enforce: Rmin <= R <= T
  1744.            <= Tmax.
  1745.  
  1746.       When a sender or receiver stops sending refreshes or a route
  1747.       change isolates a part of the path, the state in the nodes times
  1748.       out.  However, we wish to avoid delaying the timeout of each hop
  1749.       by approximately one refresh period from the timeout of the
  1750.       preceding hop, i.e., avoid making the timeout time for the last
  1751.       node in the path increase linearly with the number of hops.  This
  1752.       is avoided by the No-Refresh bit in PATH and RESV messages.
  1753.  
  1754.       o    When a node has received no refresh message at the end of its
  1755.            current refresh period, it sends a (non-)refresh message with
  1756.            the No-Refresh bit on.
  1757.  
  1758.       o    A message with the No-Refresh bit is forwarded immediately
  1759.            hop-by-hop to the end of the path (unless it is lost).
  1760.  
  1761.  
  1762.  
  1763. Zhang, Braden et al       Expires: April 1994                  [Page 30]
  1764.  
  1765.  
  1766.  
  1767.  
  1768. Internet Draft             RSVP Specification               October 1993
  1769.  
  1770.  
  1771.       o    At each node, the receipt of a message with the No-Refresh
  1772.            bit on suppresses sending a refresh message at the end of the
  1773.            current refresh period.
  1774.  
  1775.       o    Receipt of a message with the No-Refresh bit on does not
  1776.            reset the T timer for the corresponding element(s).
  1777.  
  1778.       In a perfect world these No-Refresh messages will cause all
  1779.       following nodes to time out at the same time.  Due to small
  1780.       variations in timing, the actual behavior may be more complex, but
  1781.       all nodes should time out at approximately the same time.
  1782.  
  1783.       The receiver should be conservative about reacting to certain
  1784.       error messages.  For example, during a route change a receiver may
  1785.       get back "No Path" error messages until Path messages have
  1786.       propagated along the new route.
  1787.  
  1788.       When RESV messages are merged, the message that is forwarded will
  1789.       carry the largest flowspec and the corresponding RecvAddress from
  1790.       the merged messages.  If the same largest flowspec occurs in two
  1791.       or more merged messages, the resulting message should carry the
  1792.       numerically largest RecvAddress.  This choice will ensure success
  1793.       of loop detection using the RecvAddress field.
  1794.  
  1795.    3.4 Sending RSVP Messages
  1796.  
  1797.       Under overload conditions, lost RSVP control messages could cause
  1798.       the loss of resource reservations.  It recommended that routers be
  1799.       configured to give a preferred class of service to RSVP packets.
  1800.       RSVP should not use significant bandwidth, but its delay needs to
  1801.       be controlled.
  1802.  
  1803.       An RSVP PATH or RESV message consists of a small root segment (24
  1804.       or 28 bytes) followed by a list of descriptors.  The descriptors
  1805.       are bulky and there could be a large number of them, resulting in
  1806.       potentially very large messages.  IP fragmentation is inadvisable,
  1807.       since it has bad error characteristics.  Instead, RSVP-level
  1808.       fragmentation should be used.  That is, a message with a long list
  1809.       of descriptors will be divided into segments that will fit into
  1810.       individual datagrams, each carrying the same root fields.  Each of
  1811.       these messages will be processed at the receiving node, with a
  1812.       cumulative effect on the local state.  No explicit reassembly is
  1813.       needed.
  1814.  
  1815.    3.5 Automatic Tunneling
  1816.  
  1817.       It is impractical to deploy RSVP (or any protocol) at the same
  1818.       moment throughout the Internet, and RSVP may never be deployed
  1819.  
  1820.  
  1821.  
  1822. Zhang, Braden et al       Expires: April 1994                  [Page 31]
  1823.  
  1824.  
  1825.  
  1826.  
  1827. Internet Draft             RSVP Specification               October 1993
  1828.  
  1829.  
  1830.       everywhere.  RSVP must therefore provide correct protocol
  1831.       operation even when two RSVP-capable routers are joined by an
  1832.       arbitrary "cloud" of non-RSVP routers.
  1833.  
  1834.       RSVP will automatically tunnel through such a non-RSVP cloud.
  1835.       Both RSVP and non-RSVP routers forward PATH messages towards the
  1836.       destination address using their local uni-/multicast routing
  1837.       table.  Therefore, the routing of  Path messages will be
  1838.       unaffected by non-RSVP routers in the path.  When a PATH message
  1839.       traverses a non-RSVP cloud, the copies that emerge will carry as a
  1840.       Previous Hop address the IP address of the last RSVP-capable
  1841.       router before entering the cloud.  This will cause effectively
  1842.       construct a tunnel through the cloud for RESV messages, which will
  1843.       be forwarded directly to the next RSVP-capable router on the
  1844.       path(s) back towards the source.
  1845.  
  1846.       This automatic tunneling capability of RSVP has a cost: a PATH
  1847.       message must carry the session DestAddress as its IP destination
  1848.       address; it cannot be addressed hop-by-hop.  As a result, each
  1849.       RSVP router must have a small change in its multicast forwarding
  1850.       path to recognize RSVP messages (by the IP protocol number) and
  1851.       intercept them for local processing.  See Section 3.6.5 below.
  1852.  
  1853.       (There is a potential defect in tunneling.  Merged PATH messages
  1854.       can carry information for a list of senders, and since multicast
  1855.       routing depends in general upon the sender, it is not possible to
  1856.       ensure that all the non-RSVP routers along the tunnel will be able
  1857.       to route the packet properly.  The effect turns out to be that
  1858.       tunnels may distribute path information to RSVP routers where it
  1859.       should not go, which may in turn lead to unused reservations at
  1860.       these routers.  This is hoped to be an acceptable defect.)
  1861.  
  1862.       Of course, if an intermediate cloud does not support RSVP, it is
  1863.       unable to perform resource reservation.  In this case, firm end-
  1864.       to-end service guarantees cannot be made.  However, if there is
  1865.       sufficient excess capacity through such a cloud, acceptable and
  1866.       useful realtime service will still be possible.
  1867.  
  1868.    3.6 Interfaces
  1869.  
  1870.       3.6.1 Reservation Parameters
  1871.  
  1872.          The Flowspec format is currently specific to the CSZ packet
  1873.          scheduler [CSZ92].  The parameters are:
  1874.  
  1875.          o    QoS Type (Guaranteed, Predictive, ...)
  1876.  
  1877.          o    Max end-to-end delay
  1878.  
  1879.  
  1880.  
  1881. Zhang, Braden et al       Expires: April 1994                  [Page 32]
  1882.  
  1883.  
  1884.  
  1885.  
  1886. Internet Draft             RSVP Specification               October 1993
  1887.  
  1888.  
  1889.          o    Average data rate (bits/ms)
  1890.  
  1891.          o    Token bucket depth (bits)
  1892.  
  1893.          o    Global share id  <---- ?
  1894.  
  1895.          Although a filterspec may be in part opaque, RSVP must be able
  1896.          to extract the sender IP address (or wildcard) from it, and to
  1897.          compare it with a sender template field in the path state.  For
  1898.          compactness and simplicity of processing, this version of the
  1899.          RSVP specification defines an RSVP Filterspec to be composed of
  1900.          an explicit IP address plus a variable-length mask-and-value
  1901.          pair VF, in the following format:
  1902.  
  1903.  
  1904.           +-----------+-----------+-----------+-----------+
  1905.           |                   Sender IP Address           |
  1906.           +-----------+-----------+-----------+-----------+
  1907.           |       VFlength        |      VFoffset         |
  1908.           +-----------+-----------+-----------+-----------+  ---
  1909.           |                   V: VF Value Part            | 4*VFlength
  1910.           /                                               / octets
  1911.           /                                               /
  1912.           +-----------+-----------+-----------+-----------+  ---
  1913.           |                   M: VF Mask Part             | 4*VFlength
  1914.           /                                               / octets
  1915.           /                                               /
  1916.           +-----------+-----------+-----------+-----------+  ---
  1917.  
  1918.  
  1919.          The value M and the mask V each have length 4*VFlength octets.
  1920.          M and V define a filter using a simple mask-and-match algorithm
  1921.          applied to the packet at 4*VFoffset octets from the beginning
  1922.          with the transport-layer header.  VFlength can be zero, in
  1923.          which case VFoffset is ignored.  A "wildcard" Filterspec that
  1924.          will match any sender or receiver has the IP address and the
  1925.          VFlength both zero.  The contents of M and V are opaque to
  1926.          RSVP.  The VF part may or may not include the sender IP address
  1927.          or DestAddress; RSVP will embed these explicit addresses into
  1928.          the filterspec before handing it to traffic control.  In
  1929.          general, RSVP cannot interpret the contents of the V and M
  1930.          fields, since they may depend upon protocols above the Internet
  1931.          layer.
  1932.  
  1933.          There are many possible filters that cannot be expressed using
  1934.          a simple mask and value pair.  A compact and general filter
  1935.          encoding is for further study.
  1936.  
  1937.  
  1938.  
  1939.  
  1940. Zhang, Braden et al       Expires: April 1994                  [Page 33]
  1941.  
  1942.  
  1943.  
  1944.  
  1945. Internet Draft             RSVP Specification               October 1993
  1946.  
  1947.  
  1948.       3.6.2 Application/RSVP Interface
  1949.  
  1950.          This section describes a generic API from an application to an
  1951.          RSVP control process.  The details of a real interface may be
  1952.          operating-system dependent; the following can only suggest the
  1953.          basic functions to be performed.  In particular, some of these
  1954.          calls cause information to be returned asynchronously.
  1955.  
  1956.          An application could directly send and receive RSVP messages,
  1957.          just as an application can do file transfer using UDP.
  1958.          However, we envision that many applications will not want to
  1959.          know the details of RSVP operation, nor to provide the timing
  1960.          services necessary to keep the state refreshed, any more than
  1961.          an application wants to handle TCP retransmission timeouts.
  1962.          Therefore, a host using RSVP may be expected to have an RSVP
  1963.          control process to handle these functions.  Using local IPC,
  1964.          applications will register or modify resource requests with
  1965.          this process and receive notifications of success or change of
  1966.          conditions.
  1967.  
  1968.  
  1969.          1.   Sender
  1970.  
  1971.               Call: SENDER( local socket, session socket, flowspec)  ->
  1972.               sid
  1973.  
  1974.               This call is made by a sender host for each sender socket,
  1975.               to initiate RSVP processing.  Wildcards may be inserted
  1976.               for the IP address and/or RSVP Id in the local socket, in
  1977.               which case the local system will choose appropriate
  1978.               values.  The session socket consists of the uni-/multicast
  1979.               address of the receiving host(s) and the RSVP Id to use
  1980.               for this session.
  1981.  
  1982.               The SENDER call returns immediately with a local session
  1983.               identifier "sid", which may be used in subsequent calls.
  1984.               A local session control block is created and initialized,
  1985.               and the host begins sending periodic PATH messages.
  1986.  
  1987.          2.   Receiver
  1988.  
  1989.               Call: RECVER( local socket ) -> sid
  1990.  
  1991.               This call is made by a receiver host for each receiver
  1992.               socket, to initiate RSVP processing.  The local socket
  1993.               consists of the uni-/multicast address for the desired
  1994.               session, and an RSVP Id.
  1995.  
  1996.  
  1997.  
  1998.  
  1999. Zhang, Braden et al       Expires: April 1994                  [Page 34]
  2000.  
  2001.  
  2002.  
  2003.  
  2004. Internet Draft             RSVP Specification               October 1993
  2005.  
  2006.  
  2007.               The RECVER call returns immediately with a local session
  2008.               identifier "sid", which may be used in subsequent calls.
  2009.               A local session control block is created and initialized,
  2010.               and the host begins listening for a PATH message.
  2011.  
  2012.               Following this call, data may be returned asynchronously,
  2013.               containing the flowspecs and associated foreign sockets
  2014.               for sender hosts.  Error message(s) may also be returned
  2015.               asynchronously.
  2016.  
  2017.          3.   Reserve
  2018.  
  2019.               Call: RESERVE( sid, style, Flowspec, Filterspec-list)
  2020.  
  2021.               A receiver uses this call to make a resource reservation.
  2022.               Style is an integer index indicating the reservation
  2023.               style.
  2024.  
  2025.               The first RESERVE call following a RECVER call will
  2026.               initiate the periodic transmission of RESV messages.  A
  2027.               later RESV call may be given to modify the parameters of
  2028.               the earlier call; however, this may result in Admission
  2029.               Control failure.
  2030.  
  2031.               The RESERVE call returns immediately.  Following this
  2032.               call, an error message or a data reply from the earlier
  2033.               RECVER call may be returned asynchronously.
  2034.  
  2035.          4.   Close
  2036.  
  2037.               Call: CLOSE( sid )
  2038.  
  2039.               This call may be made by either sender or receiver to
  2040.               terminate RSVP state for the given session id.  It will
  2041.               delete local state and cease sending refreshes, allowing
  2042.               distributed state to time out.
  2043.  
  2044.          5.   Teardown
  2045.  
  2046.               Call: TEARDOWN( sid )
  2047.  
  2048.               This call sends TEARDOWN messages to actively remove state
  2049.               from the routers, and then issues a CLOSE.
  2050.  
  2051.       3.6.3 RSVP/Traffic Control Interface
  2052.  
  2053.          In each router and host, enhanced QoS is achieved by a group of
  2054.          inter-related functions:  a packet classifier, an admission
  2055.  
  2056.  
  2057.  
  2058. Zhang, Braden et al       Expires: April 1994                  [Page 35]
  2059.  
  2060.  
  2061.  
  2062.  
  2063. Internet Draft             RSVP Specification               October 1993
  2064.  
  2065.  
  2066.          control module, and a packet scheduler.  We group these
  2067.          functions together under the heading traffic control.  RSVP
  2068.          uses the interfaces in this section to invoke the traffic
  2069.          control functions.
  2070.  
  2071.          ((XXX Need some way to pass the Drop flag))
  2072.  
  2073.  
  2074.          1.   Make a Reservation
  2075.  
  2076.               Call: Rhandle =  TCAddFlow( Flowspec, Drop_flag,
  2077.               [Session-Filterspec [, Sender-Filterspec]] )
  2078.  
  2079.               Returns an internal handle Rhandle for subsequent
  2080.               references to this reservation.
  2081.  
  2082.               This call passes Flowspec to admission control and returns
  2083.               an error code if Flowspec is malformed or if the requested
  2084.               resources are unavailable.  Otherwise, it establishes a
  2085.               new reservation channel corresponding to Rhandle, and if
  2086.               Filterspecs are supplied, installs a corresponding filter
  2087.               in the classifier.
  2088.  
  2089.               For Fixed-Filter reservation requests, RSVP knows about
  2090.               sharing and calls AddFlow only for distinct source pipes.
  2091.  
  2092.               For Dynamic-Filter reservation requests: suppose that the
  2093.               RESV message specifies a Dynamic Reservation Count = D,
  2094.               and F flow descriptors, where 0 <= F <= D.  Then RSVP
  2095.               calls AddFlow D times, and D-F of those calls have null
  2096.               filterspecs.
  2097.  
  2098.          2.   Switch a Channel
  2099.  
  2100.               Call: TCModFilter( Rhandle, [new Filterspec])
  2101.  
  2102.               This call replaces the filter without calling admission
  2103.               control.  It may replace an existing filter with no
  2104.               filter, modify an existing filter, or replace no filter by
  2105.               a filter.
  2106.  
  2107.          3.   Modify Flowspec
  2108.  
  2109.               Call: TCModFlowspec( Rhandle, oldFlowspec, newFlowspec)
  2110.  
  2111.               Here newFlowspec may be larger or smaller than
  2112.               oldFlowspec.
  2113.  
  2114.  
  2115.  
  2116.  
  2117. Zhang, Braden et al       Expires: April 1994                  [Page 36]
  2118.  
  2119.  
  2120.  
  2121.  
  2122. Internet Draft             RSVP Specification               October 1993
  2123.  
  2124.  
  2125.          4.   Delete Flow
  2126.  
  2127.               Call:  TCDeleteFlow( Rhandle )
  2128.  
  2129.               This call kills the reservation and reduces the reference
  2130.               count of, and deletes if the count is zero, any filter
  2131.               associated with this handle.
  2132.  
  2133.          5.   Initialize
  2134.  
  2135.               Call: TCInitialize( )
  2136.  
  2137.               This call is used when RSVP initializes its state, to
  2138.               clear out all existing classifier and/or packet scheduler
  2139.               state.
  2140.  
  2141.       3.6.4 RSVP/Routing Interface
  2142.  
  2143.          An RSVP implementation needs the following support from the
  2144.          packet forwarding and routing mechanism of the node.
  2145.  
  2146.  
  2147.          o    Promiscuous receive mode for RSVP messages
  2148.  
  2149.               Any datagram received for IP protocol 46 is to be diverted
  2150.               to the RSVP program for processing, without being
  2151.               forwarded.
  2152.  
  2153.          o    Route discovery
  2154.  
  2155.               RSVP must be able to discover the route(s) that the
  2156.               routing algorithm would have used for forwarding a
  2157.               specific datagram.
  2158.  
  2159.               GetUCRoute( DestAddress ) -> NextHop, Interface
  2160.  
  2161.               GetMCRoute( SrcAddress, DestAddress ) -> Interface
  2162.  
  2163.          o    Outgoing Link Specification
  2164.  
  2165.               RSVP must be able to force a (multicast) datagram to be
  2166.               sent on a specific outgoing virtual link, bypassing the
  2167.               normal routing mechanism.  A virtual link may be a real
  2168.               outgoing link or a multicast tunnel.
  2169.  
  2170.               This is necessary because RSVP sends different copies of
  2171.               outgoing path messages on different links, even though all
  2172.               of them use the same source and destination addresses.
  2173.  
  2174.  
  2175.  
  2176. Zhang, Braden et al       Expires: April 1994                  [Page 37]
  2177.  
  2178.  
  2179.  
  2180.  
  2181. Internet Draft             RSVP Specification               October 1993
  2182.  
  2183.  
  2184.          o    Discover (Virtual) Interface List
  2185.  
  2186.               RSVP must be able to learn what virtual interfaces exist.
  2187.  
  2188.  
  2189. 4. ACKNOWLEDGMENTS
  2190.  
  2191.    Lixia Zhang, Scott Shenker, Deborah Estrin, Dave Clark, Sugih Jamin,
  2192.    Shai Herzog, Steve Deering, Bob Braden, and Daniel Zappala have all
  2193.    made contributions to the design of RSVP.  We are grateful to Jamin
  2194.    and Herzog for prototype implementations.  The original protocol
  2195.    concepts for RSVP arose out of discussions in meetings of the End-
  2196.    to-End Research Group.
  2197.  
  2198. REFERENCES
  2199.  
  2200. [CSZ92]  Clark, D., Shenker, S., and L. Zhang, "Supporting Real-Time
  2201.     Applications in an Integrated Services Packet Network: Architecture
  2202.     and Mechanisms", Proc. SIGCOMM '92, Baltimore, MD, August 1992.
  2203.  
  2204. [ISInt93]  Braden, R., Clark, D., and S. Shenker, "Integrated Services
  2205.     in the Internet Architecture: an Overview", working draft, October
  2206.     1993.
  2207.  
  2208. [IServ93]  Shenker, S., Clark, D., and L. Zhang, "A Service Model for an
  2209.     Integrated Services Internet", working draft, October 1993.
  2210.  
  2211. [RSVP93]  Zhang, L., Deering, S., Estrin, D., Shenker, S., and D.
  2212.     Zappala, "RSVP: A New Resource ReSerVation Protocol", IEEE Network,
  2213.     September 1993.
  2214.  
  2215.  
  2216.  
  2217.  
  2218.  
  2219.  
  2220.  
  2221.  
  2222.  
  2223.  
  2224.  
  2225.  
  2226.  
  2227.  
  2228.  
  2229.  
  2230.  
  2231.  
  2232.  
  2233.  
  2234.  
  2235. Zhang, Braden et al       Expires: April 1994                  [Page 38]
  2236.  
  2237.